import { lazy } from 'react'
import onInit from '../_utils/edit.js'
import tool from '../_utils/tool'
import mtool from '../_utils/create-migration-tool'
import $copy from '@utils/copy'

const { $fn, $http } = window

// const Code = $lazy.hook(()=>import('$tp/code'))
const Input = lazy(()=>import('@antd/form/input'))

export const Index = ({ data, folder, folder_front, is_structure }) => {
	const { table_name, cols } = data
	if( !table_name ) return $fn.msg.warning('表名不能为空')
	
	const config = {
		modal: {
			title 		: '生成模板',
			width 		: 1000,
			controls: {
				after:[
					// { label:'预览模板', ghost:1, click:()=>{
					// 	let template = window.$formModalRef().formRef().getValue('template')
					// 	if( !template ) return $fn.msg.warning('请先选择模板')
					// 	template = getTemplateFileData( { template, table_name, cols } )
					// 	window.$modalRef().open({
					// 		title: '预览模板',
					// 		width: '99%',
					// 		maxWidth: null,
					// 		controls: 0,
					// 		height: '99%',
					// 		slot: <Code data={template} />
					// 	})
					// }},
					{ label:'预览后端模板', ghost:1, click:()=>{
						let template = window.$formModalRef().formRef().getValue('template')
						if( !template ) return $fn.msg.warning('请先选择后端模板')
						template = is_structure ? mtool.getTemplateFileData( { template, table_name, cols } ) : tool.getTemplateFileData( { template, table_name, cols } )
						window.$modalRef().open({
							title: '预览后端模板',
							width: '99%',
							maxWidth: null,
							height: '99%',
							slot: <Input type='textarea' value={template} className='wh jz-temp-box' />,
							controls: {
								after:[
									{ label:'复制', ghost:1, click: () => $copy(document.querySelector('.jz-temp-box textarea').value) },
								],
								ok: { label: '生成后端模板' }
							},
							onOk: ({ close }) => {
								$http.post(null, 'file/create_template', { param:{ folder, table_name, template, union: config.form.param.union } }).then(()=>{
									$fn.msg.success(`模板【${table_name}】生成成功`)
									close()
								})
							},
							onInit: () => onInit('.jz-temp-box')
						})
					}},
					{ label:'预览后端次模板', ghost:1, click:()=>{
						let template = config.form.param.union
						if( !template ) return $fn.msg.warning('请先选择后端模板')
						window.$modalRef().open({
							title: '预览后端次模板',
							width: '99%',
							maxWidth: null,
							height: '99%',
							slot: <Input type='textarea' value={template} className='wh jz-temp-box' />,
							controls: {
								after:[
									{ label:'复制', ghost:1, click: () => $copy(document.querySelector('.jz-temp-box textarea').value) },
								],
								ok: 0
							},
							onInit: () => onInit('.jz-temp-box')
						})
					}},
					{ label:'复制后端模板', ghost:1, click: () => {
						let template = window.$formModalRef().formRef().getValue('template')
						if( !template ) return $fn.msg.warning('请先选择后端模板')
						template = is_structure ? mtool.getTemplateFileData( { template, table_name, cols } ) : tool.getTemplateFileData( { template, table_name, cols } )
						$copy(template)
					} },
					{ label:'复制后端次模板', ghost:1, click: () => {
						let template = config.form.param.union
						if( !template ) return $fn.msg.warning('请先选择后端模板')
						$copy(template)
					} },
				],
				before: [
					{ label:'复制前端模板', ghost:1, click: () => {
						let template = window.$formModalRef().formRef().getValue('front')
						if( !template ) return $fn.msg.warning('请先选择前端模板')
						template = is_structure ? mtool.getFrontTemplateData( { template, cols } ) : tool.getFrontTemplateData( { template, cols } )
						$copy(template)
					} },
					{ label:'预览前端模板', ghost:1, click:()=>{
						let template = window.$formModalRef().formRef().getValue('front')
						if( !template ) return $fn.msg.warning('请先选择前端模板')
						template = is_structure ? mtool.getFrontTemplateData( { template, cols } ) : tool.getFrontTemplateData( { template, cols } )
						window.$modalRef().open({
							title: '预览前端模板',
							width: '99%',
							maxWidth: null,
							height: '99%',
							slot: <Input type='textarea' value={template} className='wh jz-temp-box' />,
							controls: {
								after:[
									{ label:'复制', ghost:1, click: () => $copy(document.querySelector('.jz-temp-box textarea').value) },
								],
								ok: 0
							},
							onOk: () => {
								$http.post(null, 'file/save_front_temp', { param:{ folder:folder_front, table_name, template } }).then(()=>{
									$fn.msg.success(`模板【${table_name}】生成成功`)
									close()
								})
							},
							onInit: () => onInit('.jz-temp-box')
						})
					}},
					{ label:'生成前端模板', click: () =>{
						let template = window.$formModalRef().formRef().getValue('front')
						if( !template ) return $fn.msg.warning('请先选择前端模板')
						template = is_structure ? mtool.getFrontTemplateData( { template, cols } ) : tool.getFrontTemplateData( { template, cols } )
						$http.post(null, 'file/save_front_temp', { param:{ folder:folder_front, table_name, template } }).then(()=>{
							$fn.msg.success(`模板【${table_name}】生成成功`)
							close()
						})
					} },
				],
				ok: { label: '生成后端模板' }
			}
		},
		form: {
			api 		: 'file/create_template',
			labelWidth 	: 's6',
			className 	: 'pre-form',
			okTxt 		: `模板【${table_name}】生成成功`,
			param 		: { folder, table_name },
			setParam 	: ({ template, table_name }) => ({ 
				front:null, 
				template: is_structure ? mtool.getTemplateFileData( { template, table_name, cols } ) : tool.getTemplateFileData( { template, table_name, cols } )
			}),
			close 		: false,
			data: [
				{ label:'文件名', name:'table_name', r:1 },
				{ label:'后端模板', name:'template', type:'select', api:'template/dict', r:1, change: ({ row }) =>{
					config.form.param.union = row.union
				}},
				{ label:'前端模板', name:'front', type:'select', api:'template/dict_front' },
			],
		}
	}
	
	window.$formModalRef().open(config)
}
export default Index